package com.example.demospring5.senior.diyBean;


import com.example.demospring5.senior.diyBean.entity.UserEntity;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;


/**
 * 自定义工厂bean
 * - spring提供了一个接口FactoryBean，实现了此接口就创建了一个自定义Bean
 *
 * 实际创建两个Bean，
 * 一个BeanName为 "ifredom"，返回类型为 getObjectType 返回的 UserEntity 类型对象
 * 一个BeanName为 "&ifredom"，返回类型为 DiyDefineFactoryBean 实例对象
 *
 * 测试类 TestUseBean 运行可见
 * @Author ifredomvip@gmail.com
 * @Date 2022/08/16
 */
@Component("ifredom")
public class DiyDefineFactoryBean implements FactoryBean {
    /**
     * 得到对象
     *
     * @return {@link Object}
     * @throws Exception 异常
     */
    @Override
    public Object getObject() throws Exception {
        return new UserEntity();
    }

    /**
     * 得到对象类型
     *
     * @return {@link Class}<{@link ?}>
     */
    @Override
    public Class<?> getObjectType() {
        return UserEntity.class;
    }

    /**
     * 是否单例
     *
     * @return boolean
     */
    @Override
    public boolean isSingleton() {
        return true;
    }
}
